<?php


namespace app\api\controller\v21;


use app\api\controller\v2\Auth;
use app\common\model\UserPush;

class Push extends Auth
{
    /**
     * 获取推送状态
     */
    public function getNoticeInfo()
    {
        $userPushModel = new UserPush();
        //获取用户推送信息
        $userPush = $userPushModel->getUserRegid($this->user['id']);
        $characterStatus = (int)($userPush['character_status'] ?? 0);
        $replyStatus = (int)($userPush['reply_status'] ?? 0);
        $calendarBirthdayStatus = (int)($userPush['calendar_birthday_status'] ?? 0);
        $recodePrivateStatus = (int)($userPush['recode_private_status'] ?? 0);
        $data = [
            'push_info' => [ // 个性化推送设置
                'title' => '消息设置',
                'name' => '个性化推送通知',
                'tip' => '关闭后，将不会使用你的个性信息为你提供个性化服务，包含且不限于以下服务：',
                'tip_info_list' => [
                    '基于个人信息的个性化推送（天象、运势等内容）',
                    '个人信息相关的运势、报告、功能等计算状态通知',
                    '生日功能提醒通知',
                    '评论收到的赞、回复等消息通知',
                    '商城订单状态的更新通知',
                ],
                'status' => $characterStatus ?: 1,
                'type' => 1,
            ],
            'private_info' => [ // 隐私设置
                'title' => '隐私设置',
                'private_list' => [
                    [
                        'type' => 2,
                        'name' => '其他人可以在评论中回复我',
                        'status' => $replyStatus ?: 1
                    ],
                    [
                        'type' => 3,
                        'name' => '所有生日信息展示',
                        'status' => $calendarBirthdayStatus ?: 1
                    ],
                    [
                        'type' => 4,
                        'name' => '在星盘中展示档案详细信息',
                        'status' => $recodePrivateStatus ?: 1
                    ],
                ],

            ]
        ];

        return show(config('code.success'), '获取成功', $data);
    }

    /**
     * 设置推送状态
     */
    public function setNoticeStatus()
    {
        $type = input('type/d', 0);
        $status = input('status/d', 0);
        if (!in_array($type, [1, 2, 3, 4], true) || !in_array($status, [1, 2], true))
        {
            return show(config('code.error'), '请求异常，请稍后再试～');
        }

        switch ($type)
        {
            case 1: // 个性化推送设置
                $data = [
                    'character_status' => $status
                ];
                break;
            case 2: // 其他人可以在评论中回复我
                $data = [
                    'reply_status' => $status
                ];
                break;
            case 3: // 在天象日历中展示生日信息
                $data = [
                    'calendar_birthday_status' => $status
                ];
                break;
            case 4: // 在星盘中展示档案详细信息
                $data = [
                    'recode_private_status' => $status
                ];
                break;
        }

        $userPushModel = new UserPush();

        $userPushModel->pushBind($data, (int)$this->user['id']);

        return show(config('code.success'), '操作成功');
    }
}
